package com.njtoyo.taxi.admin.service.business;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njtoyo.taxi.admin.rest.presenter.business.taxis.TaxiPresenter;
import com.njtoyo.taxi.admin.rest.presenter.business.taxis.TaxiQueryActivationCountPresenter;
import com.njtoyo.taxi.admin.rest.presenter.business.taxis.TaxisPresenter;
import com.njtoyo.taxi.admin.rest.readfile.taxis.RegisterBatchResult;
import com.njtoyo.taxi.admin.rest.readfile.taxis.ScrapBatcResult;
import com.njtoyo.taxi.admin.rest.wrapper.business.taxis.*;
import com.njtoyo.taxi.admin.rest.wrapper.open.taxi.TaxiVersionWrapper;
import com.njtoyo.taxi.entity.backend.AdminUser;
import com.taxi.entity.common.RestResult;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

public interface TaxiService {

    RestResult<Page<TaxisPresenter>> selectListTaxi(AdminUser adminUser, TaxiQueryListWrapper wrapper);

    RestResult register(TaxiRegisterWrapper wrapper);


    RestResult<RegisterBatchResult> registerBatch(MultipartFile file, RegisterBatchWrapper wrapper) throws IOException;

    RestResult updateTaxi(Long id, TaxiUpdateWrapper wrapper);

    RestResult updateTaxisScrap(Long id, TaxiScrapWrapper wrapper);

    RestResult deleteTaxi(Long id);

    RestResult<ScrapBatcResult> scrapBatch(MultipartFile file) throws IOException;


    RestResult<List<TaxiPresenter>> taxisListByPlateNumber(String plateNumber);

    void TaxisBatchexport(TaxiExportWrapper wrapper, HttpServletResponse response) throws IOException;

    RestResult<TaxiQueryActivationCountPresenter> getActivationCount(AdminUser adminUser, QueryTaxiActivationCountWrapper wrapper);

    RestResult sendOrder(Long id);

    RestResult getNearbyCarByPoint(String lng, String lat,String callMode);

    /**
     * 根据车牌号获取车机版本
     * @param taxiVersionWrapper
     * @return
     */
    RestResult getTaxiDeviceVersion(TaxiVersionWrapper taxiVersionWrapper);

    RestResult bindCC(Long id);
}
